package jee.boot.entity.task;

import jee.boot.common.properties.ProjectConfig;
import jee.boot.common.remote.RemoteEndpoint;
import jee.boot.common.utils.SpringContextHolder;
import jee.boot.entity.websocket.WebsocketMessage;

/**
 * 任务处理
 */
public interface TaskExecuteService {
    /**
     * 提供导入导出的配置,包括模板,名称等等
     *
     * @param task
     * @return
     */
    IexpTaskConfig taskConfig(IexpTask task);

    /**
     * renw开始的前置处理
     *
     * @param task
     */
    default void preProcess(IexpTask task) {
        //我们默认使用task创建用户id来充当sid
//        NoticeHandler.sendMessage(task.getCreateBy().getId(),task);
    }

    /**
     * 任务完成的后置处理
     *
     * @param task
     */
    default void postProcess(IexpTask task) {
        RemoteEndpoint remoteEndpoint = SpringContextHolder.getApplicationContext().getBean(RemoteEndpoint.class);
        ProjectConfig projectConfig = SpringContextHolder.getApplicationContext().getBean(ProjectConfig.class);
        //我们默认使用task创建用户id来充当sid
        //需要将消息推送至message-server服务中
        WebsocketMessage message = new WebsocketMessage();
        message.setSid(task.getCreateBy().getId());
        message.setMsg(task);
        remoteEndpoint.executePost(projectConfig.getOpenMessageServer(), "/websocket/send", message, WebsocketMessage.class);
    }
}
